/*****************************************************************
* @file    	main.c
* @author 	dralee
* @version	v1.0
* @date			2021-12-01
* @brief		RCC MCO输出
*		配置MCO引脚：PA8对外提供时钟，最高频率不能超过IO翻转频率50MHz
*		MCO时钟来源可以：PLLCLK/2,HSI,HSE,SYSCLK
******************************************************************/
#include "stm32f10x.h"
#include "led.h"
#include "clock.h"
#include "mocoutput.h"

#define SOFT_DELAY	delay(0x0FFFFF);

void delay(__IO uint32_t nCount);

/**
 *****************************************
 * @brief 主函数
 * @param 无
 * @retval 无
 *****************************************/
int main(void)
{
	// 程序到main前，启动文件startup_stm32f10x_md.s已调用SystemInit()函数把系统时钟初始化成72MHz
	// 如想修改系统时钟，可到system_stm32f10x.c中SystemInit()中编写修改
	
	// 重新设置系统时钟，一般最高72MHz
	// SYSCLK = 8M * RCC_PLLMul_x, x:[2,3,...16]
	HSE_SetSysClock(RCC_PLLMul_9);
	
	// 设置为内部高速时钟，16倍频，即8M/2*16=64M
	//HSI_SetSysClock(RCC_PLLMul_16);
	// MCO引脚初始化
	MCO_GPIO_Config();
	
	// 设置MCO引脚输出时钟，用示波器可在PA8测量到输出时钟信息
	RCC_MCOConfig(RCC_MCO_HSE);					// 8M
	//RCC_MCOConfig(RCC_MCO_HSI);					// 8M
	//RCC_MCOConfig(RCC_MCO_PLLCLK_Div2); // 36M
	//RCC_MCOConfig(RCC_MCO_SYSCLK);			// 72M
	
	LED_GPIO_Config();
	
	while(1)
	{
		LEDR(ON); 	// 红亮
		SOFT_DELAY;
		LEDR(OFF);	// 灭
		SOFT_DELAY;
	}
}

// 软件延时，使用不同时钟，延时不一样
void delay(__IO uint32_t nCount)	
{
	for(; nCount != 0; nCount--);
}
